/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Entidades.EntUsuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author sala115
 */
public class DAOUsuario {

    public String autenticar(Connection c, EntUsuario Usuario) {
        String sql = UsuarioSqlHelper.autenticar();
        String resultado = null;
        try {
            PreparedStatement st = c.prepareStatement(sql);

            ResultSet rs = null;

            st.setString(1, Usuario.getIdentificacion());
            st.setString(2, Usuario.getContrasena());
            
            
            rs = st.executeQuery();

            if (rs.next()) {
                resultado = "1";
                System.out.print("Devuelve1");
            } else {
                resultado = "0";
                System.out.print("Devuelve0000");
            }
        } catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }

    public int registrarUsuario(Connection c, EntUsuario Usuario) {
        String sql = UsuarioSqlHelper.registrarUsuario();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);

            st.setString(1, Usuario.getIdentificacion());
            st.setString(2, Usuario.getContrasena());
            st.setString(3, Usuario.getNombre());
            st.setString(4, Usuario.getApellidoUno());
            st.setString(5, Usuario.getApellidoDos());
            st.setString(6, Usuario.getTipodeusuario());
            st.setString(7, Usuario.getPreguntaSecreta());
            st.setString(8, Usuario.getRespuestaSecreta());
            st.setString(9, Usuario.getCorreo());
            
            resultado = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }

    public List<EntUsuario> listarUsuarios(Connection c) {
        String sql = UsuarioSqlHelper.listar();
        List<EntUsuario> Usuarios = new ArrayList<EntUsuario>();
        try {
            PreparedStatement st = c.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while (rs.next()) {
                EntUsuario usuario = new EntUsuario();
                usuario.setIdentificacion(rs.getString("Identificacion"));
                usuario.setContrasena(rs.getString("Contrasena"));
                usuario.setNombre(rs.getString("Nombre"));
                usuario.setApellidoUno(rs.getString("ApellidoUno"));
                usuario.setApellidoDos(rs.getString("ApellidoDos"));
                usuario.setTipodeusuario(rs.getString("Tipodeusuario"));
                 usuario.setPreguntaSecreta(rs.getString("PreguntaSecreta"));
                usuario.setRespuestaSecreta(rs.getString("RespuestaSecreta"));
                usuario.setCorreo(rs.getString("Correo"));
                Usuarios.add(usuario);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return Usuarios;
    }

    public EntUsuario buscarUsuario(Connection c, String usuario) {
        EntUsuario busca = new EntUsuario();

        try {
            PreparedStatement cl = c.prepareStatement(UsuarioSqlHelper.buscarUsu(usuario));
            ResultSet rs = cl.executeQuery();

            if (rs.next()) {
                busca.setIdentificacion(rs.getString(1));
                busca.setContrasena(rs.getString(2));
                busca.setNombre(rs.getString(3));
                busca.setApellidoUno(rs.getString(4));
                busca.setApellidoDos(rs.getString(5));
                busca.setTipodeusuario(rs.getString(6));
                busca.setPreguntaSecreta(rs.getString(7));
                busca.setRespuestaSecreta(rs.getString(8));
                 busca.setCorreo(rs.getString(9));
            } else {
                busca = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return busca;

        } finally {
            try {
                c.close();
            } catch (Exception ex) {
            }

        }

        return busca;
    }
    
    
    public int Modificar(Connection c, EntUsuario usuario) {
        String sql = UsuarioSqlHelper.Modificar();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);           
            st.setString(1, usuario.getContrasena());
            st.setString(2, usuario.getNombre());
            st.setString(3, usuario.getApellidoUno());
            st.setString(4, usuario.getApellidoDos());
            st.setString(5, usuario.getTipodeusuario());
            st.setString(6, usuario.getPreguntaSecreta());
            st.setString(7, usuario.getRespuestaSecreta());
            st.setString(8, usuario.getCorreo());
            st.setString(9, usuario.getIdentificacion());

            resultado = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }
    
    public int Eliminar(Connection c, EntUsuario usuario) {
        String sql = UsuarioSqlHelper.Eliminar();
        int resultado = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);
            st.setString(1, usuario.getIdentificacion());
             st.execute();

        } catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultado;
    }
    
    
}
